home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 December / PCWorld_2006-12_cd.bin / v cisle / ophcrack / ophcrack-win32-installer-2.3.3.exe / {app} / src / interface.c < prev    next >
C/C++ Source or Header  |  2006-10-11  |  49KB  |  1,135 lines

  1. /*
  2.  * DO NOT EDIT THIS FILE - it is generated by Glade.
  3.  */
  4.  
  5. #ifdef HAVE_CONFIG_H
  6. #  include <config.h>
  7. #endif
  8.  
  9. #include <sys/types.h>
  10. #include <sys/stat.h>
  11. #include <unistd.h>
  12. #include <string.h>
  13. #include <stdio.h>
  14.  
  15. #include <gdk/gdkkeysyms.h>
  16. #include <gtk/gtk.h>
  17.  
  18. #include "callbacks.h"
  19. #include "interface.h"
  20. #include "support.h"
  21.  
  22. #define GLADE_HOOKUP_OBJECT(component,widget,name) \
  23.   g_object_set_data_full (G_OBJECT (component), name, \
  24.     gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
  25.  
  26. #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
  27.   g_object_set_data (G_OBJECT (component), name, widget)
  28.  
  29. GtkWidget*
  30. create_main_window (void)
  31. {
  32.   GtkWidget *main_window;
  33.   GdkPixbuf *main_window_icon_pixbuf;
  34.   GtkWidget *vbox1;
  35.   GtkWidget *toolbar1;
  36.   GtkIconSize tmp_toolbar_icon_size;
  37.   GtkWidget *tmp_image;
  38.   GtkWidget *dump1;
  39.   GtkWidget *deletebutton;
  40.   GtkWidget *tablebutton;
  41.   GtkWidget *launch1;
  42.   GtkWidget *save_button;
  43.   GtkWidget *help_button;
  44.   GtkWidget *exit1;
  45.   GtkWidget *about_button;
  46.   GtkWidget *scrolledwindow1;
  47.   GtkWidget *hash_list;
  48.   GtkWidget *scrolledwindow2;
  49.   GtkWidget *textview1;
  50.   GtkWidget *statusbar1;
  51.  
  52.   main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  53.   gtk_window_set_title (GTK_WINDOW (main_window), "ophcrack");
  54.   gtk_window_set_default_size (GTK_WINDOW (main_window), 700, 560);
  55.   main_window_icon_pixbuf = create_pixbuf ("os.xpm");
  56.   if (main_window_icon_pixbuf)
  57.     {
  58.       gtk_window_set_icon (GTK_WINDOW (main_window), main_window_icon_pixbuf);
  59.       gdk_pixbuf_unref (main_window_icon_pixbuf);
  60.     }
  61.  
  62.   vbox1 = gtk_vbox_new (FALSE, 10);
  63.   gtk_widget_show (vbox1);
  64.   gtk_container_add (GTK_CONTAINER (main_window), vbox1);
  65.  
  66.   toolbar1 = gtk_toolbar_new ();
  67.   gtk_widget_show (toolbar1);
  68.   gtk_box_pack_start (GTK_BOX (vbox1), toolbar1, FALSE, FALSE, 0);
  69.   gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_BOTH);
  70.   tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1));
  71.  
  72.   tmp_image = gtk_image_new_from_stock ("gtk-harddisk", tmp_toolbar_icon_size);
  73.   gtk_widget_show (tmp_image);
  74.   dump1 = (GtkWidget*) gtk_tool_button_new (tmp_image, "Load...");
  75.   gtk_widget_show (dump1);
  76.   gtk_container_add (GTK_CONTAINER (toolbar1), dump1);
  77.  
  78.   tmp_image = gtk_image_new_from_stock ("gtk-delete", tmp_toolbar_icon_size);
  79.   gtk_widget_show (tmp_image);
  80.   deletebutton = (GtkWidget*) gtk_tool_button_new (tmp_image, "Delete");
  81.   gtk_widget_show (deletebutton);
  82.   gtk_container_add (GTK_CONTAINER (toolbar1), deletebutton);
  83.  
  84.   tmp_image = gtk_image_new_from_stock ("gtk-justify-fill", tmp_toolbar_icon_size);
  85.   gtk_widget_show (tmp_image);
  86.   tablebutton = (GtkWidget*) gtk_tool_button_new (tmp_image, "Tables...");
  87.   gtk_widget_show (tablebutton);
  88.   gtk_container_add (GTK_CONTAINER (toolbar1), tablebutton);
  89.  
  90.   launch1 = (GtkWidget*) gtk_toggle_tool_button_new ();
  91.   gtk_tool_button_set_label (GTK_TOOL_BUTTON (launch1), "Launch");
  92.   tmp_image = gtk_image_new_from_stock ("gtk-execute", tmp_toolbar_icon_size);
  93.   gtk_widget_show (tmp_image);
  94.   gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (launch1), tmp_image);
  95.   gtk_widget_show (launch1);
  96.   gtk_container_add (GTK_CONTAINER (toolbar1), launch1);
  97.   gtk_widget_set_sensitive (launch1, FALSE);
  98.  
  99.   save_button = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-save-as");
  100.   gtk_widget_show (save_button);
  101.   gtk_container_add (GTK_CONTAINER (toolbar1), save_button);
  102.   gtk_widget_set_sensitive (save_button, FALSE);
  103.  
  104.   help_button = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-help");
  105.   gtk_widget_show (help_button);
  106.   gtk_container_add (GTK_CONTAINER (toolbar1), help_button);
  107.  
  108.   tmp_image = gtk_image_new_from_stock ("gtk-quit", tmp_toolbar_icon_size);
  109.   gtk_widget_show (tmp_image);
  110.   exit1 = (GtkWidget*) gtk_tool_button_new (tmp_image, "Exit");
  111.   gtk_widget_show (exit1);
  112.   gtk_container_add (GTK_CONTAINER (toolbar1), exit1);
  113.  
  114.   tmp_image = create_pixmap (main_window, "os.xpm");
  115.   gtk_widget_show (tmp_image);
  116.   about_button = (GtkWidget*) gtk_tool_button_new (tmp_image, "About");
  117.   gtk_widget_show (about_button);
  118.   gtk_container_add (GTK_CONTAINER (toolbar1), about_button);
  119.  
  120.   scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
  121.   gtk_widget_show (scrolledwindow1);
  122.   gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0);
  123.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  124.   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN);
  125.  
  126.   hash_list = gtk_tree_view_new ();
  127.   gtk_widget_show (hash_list);
  128.   gtk_container_add (GTK_CONTAINER (scrolledwindow1), hash_list);
  129.   gtk_tree_view_set_enable_search (GTK_TREE_VIEW (hash_list), FALSE);
  130.  
  131.   scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
  132.   gtk_widget_show (scrolledwindow2);
  133.   gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow2, FALSE, TRUE, 0);
  134.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  135.  
  136.   textview1 = gtk_text_view_new ();
  137.   gtk_widget_show (textview1);
  138.   gtk_container_add (GTK_CONTAINER (scrolledwindow2), textview1);
  139.   gtk_widget_set_size_request (textview1, -1, 100);
  140.   gtk_text_view_set_editable (GTK_TEXT_VIEW (textview1), FALSE);
  141.   gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (textview1), FALSE);
  142.   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview1), FALSE);
  143.   gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW (textview1), 5);
  144.   gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (textview1), 5);
  145.   gtk_text_view_set_left_margin (GTK_TEXT_VIEW (textview1), 10);
  146.   gtk_text_view_set_right_margin (GTK_TEXT_VIEW (textview1), 10);
  147.  
  148.   statusbar1 = gtk_statusbar_new ();
  149.   gtk_widget_show (statusbar1);
  150.   gtk_box_pack_start (GTK_BOX (vbox1), statusbar1, FALSE, FALSE, 0);
  151.   gtk_container_set_border_width (GTK_CONTAINER (statusbar1), 1);
  152.  
  153.   g_signal_connect ((gpointer) main_window, "destroy",
  154.                     G_CALLBACK (on_exit1_activate),
  155.                     NULL);
  156.   g_signal_connect ((gpointer) dump1, "clicked",
  157.                     G_CALLBACK (on_dump1_clicked),
  158.                     NULL);
  159.   g_signal_connect ((gpointer) deletebutton, "clicked",
  160.                     G_CALLBACK (on_deletebutton_clicked),
  161.                     NULL);
  162.   g_signal_connect ((gpointer) tablebutton, "clicked",
  163.                     G_CALLBACK (on_tablebutton_activate),
  164.                     NULL);
  165.   g_signal_connect_swapped ((gpointer) launch1, "toggled",
  166.                             G_CALLBACK (on_launch1_toggled),
  167.                             GTK_OBJECT (launch1));
  168.   g_signal_connect ((gpointer) save_button, "clicked",
  169.                     G_CALLBACK (on_save_button_clicked),
  170.                     NULL);
  171.   g_signal_connect ((gpointer) help_button, "clicked",
  172.                     G_CALLBACK (on_help_button_clicked),
  173.                     NULL);
  174.   g_signal_connect ((gpointer) exit1, "clicked",
  175.                     G_CALLBACK (on_exit1_activate),
  176.                     NULL);
  177.   g_signal_connect ((gpointer) about_button, "clicked",
  178.                     G_CALLBACK (on_about_button_clicked),
  179.                     NULL);
  180.  
  181.   /* Store pointers to all widgets, for use by lookup_widget(). */
  182.   GLADE_HOOKUP_OBJECT_NO_REF (main_window, main_window, "main_window");
  183.   GLADE_HOOKUP_OBJECT (main_window, vbox1, "vbox1");
  184.   GLADE_HOOKUP_OBJECT (main_window, toolbar1, "toolbar1");
  185.   GLADE_HOOKUP_OBJECT (main_window, dump1, "dump1");
  186.   GLADE_HOOKUP_OBJECT (main_window, deletebutton, "deletebutton");
  187.   GLADE_HOOKUP_OBJECT (main_window, tablebutton, "tablebutton");
  188.   GLADE_HOOKUP_OBJECT (main_window, launch1, "launch1");
  189.   GLADE_HOOKUP_OBJECT (main_window, save_button, "save_button");
  190.   GLADE_HOOKUP_OBJECT (main_window, help_button, "help_button");
  191.   GLADE_HOOKUP_OBJECT (main_window, exit1, "exit1");
  192.   GLADE_HOOKUP_OBJECT (main_window, about_button, "about_button");
  193.   GLADE_HOOKUP_OBJECT (main_window, scrolledwindow1, "scrolledwindow1");
  194.   GLADE_HOOKUP_OBJECT (main_window, hash_list, "hash_list");
  195.   GLADE_HOOKUP_OBJECT (main_window, scrolledwindow2, "scrolledwindow2");
  196.   GLADE_HOOKUP_OBJECT (main_window, textview1, "textview1");
  197.   GLADE_HOOKUP_OBJECT (main_window, statusbar1, "statusbar1");
  198.  
  199.   return main_window;
  200. }
  201.  
  202. GtkWidget*
  203. create_dialog1 (void)
  204. {
  205.   GtkWidget *dialog1;
  206.   GtkWidget *dialog_vbox1;
  207.   GtkWidget *label3;
  208.   GtkWidget *dialog_action_area1;
  209.   GtkWidget *button3;
  210.  
  211.   dialog1 = gtk_dialog_new ();
  212.   gtk_container_set_border_width (GTK_CONTAINER (dialog1), 15);
  213.   gtk_window_set_title (GTK_WINDOW (dialog1), "File Error");
  214.   gtk_window_set_type_hint (GTK_WINDOW (dialog1), GDK_WINDOW_TYPE_HINT_DIALOG);
  215.  
  216.   dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
  217.   gtk_widget_show (dialog_vbox1);
  218.  
  219.   label3 = gtk_label_new ("Error: no valid hash was found in this file.");
  220.   gtk_widget_show (label3);
  221.   gtk_box_pack_start (GTK_BOX (dialog_vbox1), label3, FALSE, FALSE, 0);
  222.   gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
  223.   gtk_label_set_line_wrap (GTK_LABEL (label3), TRUE);
  224.  
  225.   dialog_action_area1 = GTK_DIALOG (dialog1)->action_area;
  226.   gtk_widget_show (dialog_action_area1);
  227.   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
  228.  
  229.   button3 = gtk_button_new_with_mnemonic ("OK");
  230.   gtk_widget_show (button3);
  231.   gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), button3, 0);
  232.  
  233.   g_signal_connect_swapped ((gpointer) button3, "clicked",
  234.                             G_CALLBACK (gtk_widget_destroy),
  235.                             GTK_OBJECT (dialog1));
  236.  
  237.   /* Store pointers to all widgets, for use by lookup_widget(). */
  238.   GLADE_HOOKUP_OBJECT_NO_REF (dialog1, dialog1, "dialog1");
  239.   GLADE_HOOKUP_OBJECT_NO_REF (dialog1, dialog_vbox1, "dialog_vbox1");
  240.   GLADE_HOOKUP_OBJECT (dialog1, label3, "label3");
  241.   GLADE_HOOKUP_OBJECT_NO_REF (dialog1, dialog_action_area1, "dialog_action_area1");
  242.   GLADE_HOOKUP_OBJECT (dialog1, button3, "button3");
  243.  
  244.   return dialog1;
  245. }
  246.  
  247. GtkWidget*
  248. create_filechooserdialog1 (void)
  249. {
  250.   GtkWidget *filechooserdialog1;
  251.   GtkWidget *dialog_vbox2;
  252.   GtkWidget *textview2;
  253.   GtkWidget *dialog_action_area2;
  254.   GtkWidget *cancel_button2;
  255.   GtkWidget *ok_button2;
  256.  
  257.   filechooserdialog1 = gtk_file_chooser_dialog_new ("Choose", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, NULL);
  258.   gtk_window_set_type_hint (GTK_WINDOW (filechooserdialog1), GDK_WINDOW_TYPE_HINT_DIALOG);
  259.  
  260.   dialog_vbox2 = GTK_DIALOG (filechooserdialog1)->vbox;
  261.   gtk_widget_show (dialog_vbox2);
  262.  
  263.   textview2 = gtk_text_view_new ();
  264.   gtk_widget_show (textview2);
  265.   gtk_box_pack_start (GTK_BOX (dialog_vbox2), textview2, FALSE, FALSE, 0);
  266.   gtk_text_view_set_editable (GTK_TEXT_VIEW (textview2), FALSE);
  267.   gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (textview2), FALSE);
  268.   gtk_text_view_set_justification (GTK_TEXT_VIEW (textview2), GTK_JUSTIFY_CENTER);
  269.   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview2), FALSE);
  270.   gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview2)), "Select the directory containing the encrypted SAM and the SYSTEM file.\n(Usually under C:\\WINDOWS\\system32\\config\\)", -1);
  271.  
  272.   dialog_action_area2 = GTK_DIALOG (filechooserdialog1)->action_area;
  273.   gtk_widget_show (dialog_action_area2);
  274.   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END);
  275.  
  276.   cancel_button2 = gtk_button_new_from_stock ("gtk-cancel");
  277.   gtk_widget_show (cancel_button2);
  278.   gtk_dialog_add_action_widget (GTK_DIALOG (filechooserdialog1), cancel_button2, GTK_RESPONSE_CANCEL);
  279.   GTK_WIDGET_SET_FLAGS (cancel_button2, GTK_CAN_DEFAULT);
  280.  
  281.   ok_button2 = gtk_button_new_from_stock ("gtk-open");
  282.   gtk_widget_show (ok_button2);
  283.   gtk_dialog_add_action_widget (GTK_DIALOG (filechooserdialog1), ok_button2, GTK_RESPONSE_OK);
  284.   GTK_WIDGET_SET_FLAGS (ok_button2, GTK_CAN_DEFAULT);
  285.  
  286.   g_signal_connect ((gpointer) filechooserdialog1, "destroy",
  287.                     G_CALLBACK (on_filechooserdialog1_close),
  288.                     NULL);
  289.   g_signal_connect ((gpointer) cancel_button2, "clicked",
  290.                     G_CALLBACK (on_cancel_button2_clicked),
  291.                     NULL);
  292.   g_signal_connect ((gpointer) ok_button2, "clicked",
  293.                     G_CALLBACK (on_ok_button2_clicked),
  294.                     NULL);
  295.  
  296.   /* Store pointers to all widgets, for use by lookup_widget(). */
  297.   GLADE_HOOKUP_OBJECT_NO_REF (filechooserdialog1, filechooserdialog1, "filechooserdialog1");
  298.   GLADE_HOOKUP_OBJECT_NO_REF (filechooserdialog1, dialog_vbox2, "dialog_vbox2");
  299.   GLADE_HOOKUP_OBJECT (filechooserdialog1, textview2, "textview2");
  300.   GLADE_HOOKUP_OBJECT_NO_REF (filechooserdialog1, dialog_action_area2, "dialog_action_area2");
  301.   GLADE_HOOKUP_OBJECT (filechooserdialog1, cancel_button2, "cancel_button2");
  302.   GLADE_HOOKUP_OBJECT (filechooserdialog1, ok_button2, "ok_button2");
  303.  
  304.   gtk_widget_grab_default (ok_button2);
  305.   return filechooserdialog1;
  306. }
  307.  
  308. GtkWidget*
  309. create_filechooserdialog2 (void)
  310. {
  311.   GtkWidget *filechooserdialog2;
  312.   GtkWidget *dialog_vbox3;
  313.   GtkWidget *dialog_action_area3;
  314.   GtkWidget *save_cancel_button;
  315.   GtkWidget *save_ok_button;
  316.  
  317.   filechooserdialog2 = gtk_file_chooser_dialog_new ("", NULL, GTK_FILE_CHOOSER_ACTION_SAVE, NULL);
  318.   gtk_window_set_type_hint (GTK_WINDOW (filechooserdialog2), GDK_WINDOW_TYPE_HINT_DIALOG);
  319.  
  320.   dialog_vbox3 = GTK_DIALOG (filechooserdialog2)->vbox;
  321.   gtk_widget_show (dialog_vbox3);
  322.  
  323.   dialog_action_area3 = GTK_DIALOG (filechooserdialog2)->action_area;
  324.   gtk_widget_show (dialog_action_area3);
  325.   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area3), GTK_BUTTONBOX_END);
  326.  
  327.   save_cancel_button = gtk_button_new_from_stock ("gtk-cancel");
  328.   gtk_widget_show (save_cancel_button);
  329.   gtk_dialog_add_action_widget (GTK_DIALOG (filechooserdialog2), save_cancel_button, GTK_RESPONSE_CANCEL);
  330.   GTK_WIDGET_SET_FLAGS (save_cancel_button, GTK_CAN_DEFAULT);
  331.  
  332.   save_ok_button = gtk_button_new_from_stock ("gtk-save");
  333.   gtk_widget_show (save_ok_button);
  334.   gtk_dialog_add_action_widget (GTK_DIALOG (filechooserdialog2), save_ok_button, GTK_RESPONSE_OK);
  335.   GTK_WIDGET_SET_FLAGS (save_ok_button, GTK_CAN_DEFAULT);
  336.  
  337.   g_signal_connect ((gpointer) filechooserdialog2, "destroy",
  338.                     G_CALLBACK (on_filechooserdialog2_close),
  339.                     NULL);
  340.   g_signal_connect_swapped ((gpointer) save_cancel_button, "clicked",
  341.                             G_CALLBACK (gtk_widget_destroy),
  342.                             GTK_OBJECT (filechooserdialog2));
  343.   g_signal_connect ((gpointer) save_ok_button, "clicked",
  344.                     G_CALLBACK (on_save_ok_button_clicked),
  345.                     NULL);
  346.  
  347.   /* Store pointers to all widgets, for use by lookup_widget(). */
  348.   GLADE_HOOKUP_OBJECT_NO_REF (filechooserdialog2, filechooserdialog2, "filechooserdialog2");
  349.   GLADE_HOOKUP_OBJECT_NO_REF (filechooserdialog2, dialog_vbox3, "dialog_vbox3");
  350.   GLADE_HOOKUP_OBJECT_NO_REF (filechooserdialog2, dialog_action_area3, "dialog_action_area3");
  351.   GLADE_HOOKUP_OBJECT (filechooserdialog2, save_cancel_button, "save_cancel_button");
  352.   GLADE_HOOKUP_OBJECT (filechooserdialog2, save_ok_button, "save_ok_button");
  353.  
  354.   gtk_widget_grab_default (save_ok_button);
  355.   return filechooserdialog2;
  356. }
  357.  
  358. GtkWidget*
  359. create_fileselection (void)
  360. {
  361.   GtkWidget *fileselection;
  362.   GtkWidget *dialog_vbox4;
  363.   GtkWidget *dialog_action_area4;
  364.   GtkWidget *cancel_button1;
  365.   GtkWidget *ok_button1;
  366.  
  367.   fileselection = gtk_file_chooser_dialog_new ("Select File...", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, NULL);
  368.   gtk_window_set_type_hint (GTK_WINDOW (fileselection), GDK_WINDOW_TYPE_HINT_DIALOG);
  369.  
  370.   dialog_vbox4 = GTK_DIALOG (fileselection)->vbox;
  371.   gtk_widget_show (dialog_vbox4);
  372.  
  373.   dialog_action_area4 = GTK_DIALOG (fileselection)->action_area;
  374.   gtk_widget_show (dialog_action_area4);
  375.   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area4), GTK_BUTTONBOX_END);
  376.  
  377.   cancel_button1 = gtk_button_new_from_stock ("gtk-cancel");
  378.   gtk_widget_show (cancel_button1);
  379.   gtk_dialog_add_action_widget (GTK_DIALOG (fileselection), cancel_button1, GTK_RESPONSE_CANCEL);
  380.   GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT);
  381.  
  382.   ok_button1 = gtk_button_new_from_stock ("gtk-open");
  383.   gtk_widget_show (ok_button1);
  384.   gtk_dialog_add_action_widget (GTK_DIALOG (fileselection), ok_button1, GTK_RESPONSE_OK);
  385.   GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT);
  386.  
  387.   g_signal_connect ((gpointer) fileselection, "destroy",
  388.                     G_CALLBACK (on_fileselection_close),
  389.                     NULL);
  390.   g_signal_connect ((gpointer) cancel_button1, "clicked",
  391.                     G_CALLBACK (on_cancel_button1_clicked),
  392.                     NULL);
  393.   g_signal_connect ((gpointer) ok_button1, "clicked",
  394.                     G_CALLBACK (on_ok_button1_clicked),
  395.                     NULL);
  396.  
  397.   /* Store pointers to all widgets, for use by lookup_widget(). */
  398.   GLADE_HOOKUP_OBJECT_NO_REF (fileselection, fileselection, "fileselection");
  399.   GLADE_HOOKUP_OBJECT_NO_REF (fileselection, dialog_vbox4, "dialog_vbox4");
  400.   GLADE_HOOKUP_OBJECT_NO_REF (fileselection, dialog_action_area4, "dialog_action_area4");
  401.   GLADE_HOOKUP_OBJECT (fileselection, cancel_button1, "cancel_button1");
  402.   GLADE_HOOKUP_OBJECT (fileselection, ok_button1, "ok_button1");
  403.  
  404.   gtk_widget_grab_default (ok_button1);
  405.   return fileselection;
  406. }
  407.  
  408. GtkWidget*
  409. create_about_window (void)
  410. {
  411.   GtkWidget *about_window;
  412.   GtkWidget *vbox2;
  413.   GtkWidget *logo_os;
  414.   GtkWidget *about_text;
  415.   GtkWidget *about_close_button;
  416.  
  417.   about_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  418.   gtk_widget_set_size_request (about_window, 480, 265);
  419.   gtk_window_set_position (GTK_WINDOW (about_window), GTK_WIN_POS_CENTER_ON_PARENT);
  420.   gtk_window_set_resizable (GTK_WINDOW (about_window), FALSE);
  421.   gtk_window_set_decorated (GTK_WINDOW (about_window), FALSE);
  422.  
  423.   vbox2 = gtk_vbox_new (FALSE, 0);
  424.   gtk_widget_show (vbox2);
  425.   gtk_container_add (GTK_CONTAINER (about_window), vbox2);
  426.  
  427.   logo_os = create_pixmap (about_window, "logo_os.xpm");
  428.   gtk_widget_show (logo_os);
  429.   gtk_box_pack_start (GTK_BOX (vbox2), logo_os, TRUE, TRUE, 0);
  430.  
  431.   about_text = gtk_text_view_new ();
  432.   gtk_widget_show (about_text);
  433.   gtk_box_pack_start (GTK_BOX (vbox2), about_text, TRUE, TRUE, 0);
  434.   gtk_text_view_set_justification (GTK_TEXT_VIEW (about_text), GTK_JUSTIFY_CENTER);
  435.   gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (about_text)), "\n\nophcrack v2.3.3\nPhilippe Oechslin. Cedric Tissieres\nhttp://www.objectif-securite.ch\n", -1);
  436.  
  437.   about_close_button = gtk_button_new_with_mnemonic ("Close");
  438.   gtk_widget_show (about_close_button);
  439.   gtk_box_pack_start (GTK_BOX (vbox2), about_close_button, FALSE, FALSE, 0);
  440.   gtk_button_set_relief (GTK_BUTTON (about_close_button), GTK_RELIEF_NONE);
  441.  
  442.   g_signal_connect ((gpointer) about_window, "destroy",
  443.                     G_CALLBACK (on_about_close_button_clicked),
  444.                     NULL);
  445.   g_signal_connect ((gpointer) about_close_button, "clicked",
  446.                     G_CALLBACK (on_about_close_button_clicked),
  447.                     NULL);
  448.  
  449.   /* Store pointers to all widgets, for use by lookup_widget(). */
  450.   GLADE_HOOKUP_OBJECT_NO_REF (about_window, about_window, "about_window");
  451.   GLADE_HOOKUP_OBJECT (about_window, vbox2, "vbox2");
  452.   GLADE_HOOKUP_OBJECT (about_window, logo_os, "logo_os");
  453.   GLADE_HOOKUP_OBJECT (about_window, about_text, "about_text");
  454.   GLADE_HOOKUP_OBJECT (about_window, about_close_button, "about_close_button");
  455.  
  456.   return about_window;
  457. }
  458.  
  459. GtkWidget*
  460. create_menu1 (void)
  461. {
  462.   GtkWidget *menu1;
  463.   GtkWidget *load_single_hash1;
  464.   GtkWidget *load_pwdump_file1;
  465.   GtkWidget *separator1;
  466.   GtkWidget *from__sam;
  467.   GtkWidget *local_pwdump1;
  468.   GtkWidget *remote_pwdump1;
  469.  
  470.   menu1 = gtk_menu_new ();
  471.  
  472.   load_single_hash1 = gtk_menu_item_new_with_mnemonic ("Single hash");
  473.   gtk_widget_show (load_single_hash1);
  474.   gtk_container_add (GTK_CONTAINER (menu1), load_single_hash1);
  475.  
  476.   load_pwdump_file1 = gtk_menu_item_new_with_mnemonic ("PWDUMP file");
  477.   gtk_widget_show (load_pwdump_file1);
  478.   gtk_container_add (GTK_CONTAINER (menu1), load_pwdump_file1);
  479.  
  480.   separator1 = gtk_separator_menu_item_new ();
  481.   gtk_widget_show (separator1);
  482.   gtk_container_add (GTK_CONTAINER (menu1), separator1);
  483.   gtk_widget_set_sensitive (separator1, FALSE);
  484.  
  485.   from__sam = gtk_menu_item_new_with_mnemonic ("From encrypted SAM");
  486.   gtk_widget_show (from__sam);
  487.   gtk_container_add (GTK_CONTAINER (menu1), from__sam);
  488.  
  489.   local_pwdump1 = gtk_menu_item_new_with_mnemonic ("From local SAM");
  490.   gtk_widget_show (local_pwdump1);
  491.   gtk_container_add (GTK_CONTAINER (menu1), local_pwdump1);
  492.  
  493.   remote_pwdump1 = gtk_menu_item_new_with_mnemonic ("From remote SAM");
  494.   gtk_widget_show (remote_pwdump1);
  495.   gtk_container_add (GTK_CONTAINER (menu1), remote_pwdump1);
  496.  
  497.   g_signal_connect ((gpointer) load_single_hash1, "activate",
  498.                     G_CALLBACK (on_load_single_hash1_activate),
  499.                     NULL);
  500.   g_signal_connect ((gpointer) load_pwdump_file1, "activate",
  501.                     G_CALLBACK (on_load_file1_activate),
  502.                     NULL);
  503.   g_signal_connect ((gpointer) from__sam, "activate",
  504.                     G_CALLBACK (on_from__sam_activate),
  505.                     NULL);
  506.   g_signal_connect ((gpointer) local_pwdump1, "activate",
  507.                     G_CALLBACK (on_local_pwdump1_activate),
  508.                     NULL);
  509.   g_signal_connect ((gpointer) remote_pwdump1, "activate",
  510.                     G_CALLBACK (on_remote_pwdump1_activate),
  511.                     NULL);
  512.  
  513.   /* Store pointers to all widgets, for use by lookup_widget(). */
  514.   GLADE_HOOKUP_OBJECT_NO_REF (menu1, menu1, "menu1");
  515.   GLADE_HOOKUP_OBJECT (menu1, load_single_hash1, "load_single_hash1");
  516.   GLADE_HOOKUP_OBJECT (menu1, load_pwdump_file1, "load_pwdump_file1");
  517.   GLADE_HOOKUP_OBJECT (menu1, separator1, "separator1");
  518.   GLADE_HOOKUP_OBJECT (menu1, from__sam, "from__sam");
  519.   GLADE_HOOKUP_OBJECT (menu1, local_pwdump1, "local_pwdump1");
  520.   GLADE_HOOKUP_OBJECT (menu1, remote_pwdump1, "remote_pwdump1");
  521.  
  522.   return menu1;
  523. }
  524.  
  525. GtkWidget*
  526. create_dialog_remote_dump (void)
  527. {
  528.   GtkWidget *dialog_remote_dump;
  529.   GtkWidget *dialog_vbox5;
  530.   GtkWidget *table1;
  531.   GtkWidget *label4;
  532.   GtkWidget *label5;
  533.   GtkWidget *label6;
  534.   GtkWidget *target_hostname;
  535.   GtkWidget *target_share;
  536.   GtkWidget *target_user;
  537.   GtkWidget *dialog_action_area5;
  538.   GtkWidget *remote_cancel_button;
  539.   GtkWidget *remote_ok_button;
  540.  
  541.   dialog_remote_dump = gtk_dialog_new ();
  542.   gtk_widget_set_size_request (dialog_remote_dump, 550, 125);
  543.   gtk_window_set_title (GTK_WINDOW (dialog_remote_dump), "Remote SAM parameters");
  544.   gtk_window_set_default_size (GTK_WINDOW (dialog_remote_dump), 550, 125);
  545.   gtk_window_set_resizable (GTK_WINDOW (dialog_remote_dump), FALSE);
  546.   gtk_window_set_type_hint (GTK_WINDOW (dialog_remote_dump), GDK_WINDOW_TYPE_HINT_DIALOG);
  547.  
  548.   dialog_vbox5 = GTK_DIALOG (dialog_remote_dump)->vbox;
  549.   gtk_widget_show (dialog_vbox5);
  550.  
  551.   table1 = gtk_table_new (3, 2, FALSE);
  552.   gtk_widget_show (table1);
  553.   gtk_box_pack_start (GTK_BOX (dialog_vbox5), table1, TRUE, TRUE, 0);
  554.  
  555.   label4 = gtk_label_new ("Target hostname or IP");
  556.   gtk_widget_show (label4);
  557.   gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 0, 1,
  558.                     (GtkAttachOptions) (GTK_FILL),
  559.                     (GtkAttachOptions) (0), 0, 0);
  560.   gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5);
  561.  
  562.   label5 = gtk_label_new ("Target share (default ADMIN$)");
  563.   gtk_widget_show (label5);
  564.   gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 1, 2,
  565.                     (GtkAttachOptions) (GTK_FILL),
  566.                     (GtkAttachOptions) (0), 0, 0);
  567.   gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5);
  568.  
  569.   label6 = gtk_label_new ("Username (if different from current)");
  570.   gtk_widget_show (label6);
  571.   gtk_table_attach (GTK_TABLE (table1), label6, 0, 1, 2, 3,
  572.                     (GtkAttachOptions) (GTK_FILL),
  573.                     (GtkAttachOptions) (0), 0, 0);
  574.   gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);
  575.  
  576.   target_hostname = gtk_entry_new ();
  577.   gtk_widget_show (target_hostname);
  578.   gtk_table_attach (GTK_TABLE (table1), target_hostname, 1, 2, 0, 1,
  579.                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
  580.                     (GtkAttachOptions) (0), 0, 0);
  581.   gtk_entry_set_max_length (GTK_ENTRY (target_hostname), 60);
  582.   gtk_entry_set_width_chars (GTK_ENTRY (target_hostname), 30);
  583.  
  584.   target_share = gtk_entry_new ();
  585.   gtk_widget_show (target_share);
  586.   gtk_table_attach (GTK_TABLE (table1), target_share, 1, 2, 1, 2,
  587.                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
  588.                     (GtkAttachOptions) (0), 0, 0);
  589.   gtk_entry_set_max_length (GTK_ENTRY (target_share), 60);
  590.   gtk_entry_set_width_chars (GTK_ENTRY (target_share), 30);
  591.  
  592.   target_user = gtk_entry_new ();
  593.   gtk_widget_show (target_user);
  594.   gtk_table_attach (GTK_TABLE (table1), target_user, 1, 2, 2, 3,
  595.                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
  596.                     (GtkAttachOptions) (0), 0, 0);
  597.   gtk_entry_set_max_length (GTK_ENTRY (target_user), 60);
  598.   gtk_entry_set_width_chars (GTK_ENTRY (target_user), 30);
  599.  
  600.   dialog_action_area5 = GTK_DIALOG (dialog_remote_dump)->action_area;
  601.   gtk_widget_show (dialog_action_area5);
  602.   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area5), GTK_BUTTONBOX_END);
  603.  
  604.   remote_cancel_button = gtk_button_new_from_stock ("gtk-cancel");
  605.   gtk_widget_show (remote_cancel_button);
  606.   gtk_dialog_add_action_widget (GTK_DIALOG (dialog_remote_dump), remote_cancel_button, GTK_RESPONSE_CANCEL);
  607.   GTK_WIDGET_SET_FLAGS (remote_cancel_button, GTK_CAN_DEFAULT);
  608.  
  609.   remote_ok_button = gtk_button_new_from_stock ("gtk-ok");
  610.   gtk_widget_show (remote_ok_button);
  611.   gtk_dialog_add_action_widget (GTK_DIALOG (dialog_remote_dump), remote_ok_button, GTK_RESPONSE_OK);
  612.   GTK_WIDGET_SET_FLAGS (remote_ok_button, GTK_CAN_DEFAULT);
  613.  
  614.   g_signal_connect ((gpointer) dialog_remote_dump, "destroy",
  615.                     G_CALLBACK (on_dialog_remote_dump_close),
  616.                     NULL);
  617.   g_signal_connect ((gpointer) remote_cancel_button, "clicked",
  618.                     G_CALLBACK (on_remote_cancel_button_clicked),
  619.                     NULL);
  620.   g_signal_connect ((gpointer) remote_ok_button, "clicked",
  621.                     G_CALLBACK (on_remote_ok_button_clicked),
  622.                     NULL);
  623.  
  624.   /* Store pointers to all widgets, for use by lookup_widget(). */
  625.   GLADE_HOOKUP_OBJECT_NO_REF (dialog_remote_dump, dialog_remote_dump, "dialog_remote_dump");
  626.   GLADE_HOOKUP_OBJECT_NO_REF (dialog_remote_dump, dialog_vbox5, "dialog_vbox5");
  627.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, table1, "table1");
  628.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, label4, "label4");
  629.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, label5, "label5");
  630.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, label6, "label6");
  631.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, target_hostname, "target_hostname");
  632.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, target_share, "target_share");
  633.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, target_user, "target_user");
  634.   GLADE_HOOKUP_OBJECT_NO_REF (dialog_remote_dump, dialog_action_area5, "dialog_action_area5");
  635.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, remote_cancel_button, "remote_cancel_button");
  636.   GLADE_HOOKUP_OBJECT (dialog_remote_dump, remote_ok_button, "remote_ok_button");
  637.  
  638.   return dialog_remote_dump;
  639. }
  640.  
  641. GtkWidget*
  642. create_dialog3 (void)
  643. {
  644.   GtkWidget *dialog3;
  645.   GtkWidget *vbox3;
  646.   GtkWidget *label7;
  647.   GtkWidget *hbuttonbox1;
  648.   GtkWidget *button4;
  649.  
  650.   dialog3 = gtk_dialog_new ();
  651.   gtk_container_set_border_width (GTK_CONTAINER (dialog3), 15);
  652.   gtk_window_set_title (GTK_WINDOW (dialog3), "Error");
  653.   gtk_window_set_type_hint (GTK_WINDOW (dialog3), GDK_WINDOW_TYPE_HINT_DIALOG);
  654.  
  655.   vbox3 = GTK_DIALOG (dialog3)->vbox;
  656.   gtk_widget_show (vbox3);
  657.  
  658.   label7 = gtk_label_new ("Error: you must at least \nspecify a target hostname of IP");
  659.   gtk_widget_show (label7);
  660.   gtk_box_pack_start (GTK_BOX (vbox3), label7, FALSE, FALSE, 0);
  661.   gtk_label_set_justify (GTK_LABEL (label7), GTK_JUSTIFY_CENTER);
  662.   gtk_label_set_line_wrap (GTK_LABEL (label7), TRUE);
  663.  
  664.   hbuttonbox1 = GTK_DIALOG (dialog3)->action_area;
  665.   gtk_widget_show (hbuttonbox1);
  666.   gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END);
  667.  
  668.   button4 = gtk_button_new_with_mnemonic ("OK");
  669.   gtk_widget_show (button4);
  670.   gtk_dialog_add_action_widget (GTK_DIALOG (dialog3), button4, 0);
  671.  
  672.   g_signal_connect_swapped ((gpointer) button4, "clicked",
  673.                             G_CALLBACK (gtk_widget_destroy),
  674.                             GTK_OBJECT (dialog3));
  675.  
  676.   /* Store pointers to all widgets, for use by lookup_widget(). */
  677.   GLADE_HOOKUP_OBJECT_NO_REF (dialog3, dialog3, "dialog3");
  678.   GLADE_HOOKUP_OBJECT_NO_REF (dialog3, vbox3, "vbox3");
  679.   GLADE_HOOKUP_OBJECT (dialog3, label7, "label7");
  680.   GLADE_HOOKUP_OBJECT_NO_REF (dialog3, hbuttonbox1, "hbuttonbox1");
  681.   GLADE_HOOKUP_OBJECT (dialog3, button4, "button4");
  682.  
  683.   return dialog3;
  684. }
  685.  
  686. GtkWidget*
  687. create_table_dialog (void)
  688. {
  689.   GtkWidget *table_dialog;
  690.   GtkWidget *dialog_vbox6;
  691.   GtkWidget *table2;
  692.   GtkWidget *label8;
  693.   GtkWidget *hbox1;
  694.   GtkWidget *entry_directory;
  695.   GtkWidget *button_directory;
  696.   GtkWidget *image1;
  697.   GtkWidget *label17;
  698.   GtkWidget *scrolledwindow3;
  699.   GtkWidget *table_type_list;
  700.   GtkWidget *label23;
  701.   GtkWidget *dialog_action_area6;
  702.   GtkWidget *cancelbutton1;
  703.   GtkWidget *okbutton1;
  704.  
  705.   table_dialog = gtk_dialog_new ();
  706.   gtk_window_set_title (GTK_WINDOW (table_dialog), "Select ophcrack tables");
  707.   gtk_window_set_type_hint (GTK_WINDOW (table_dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
  708.  
  709.   dialog_vbox6 = GTK_DIALOG (table_dialog)->vbox;
  710.   gtk_widget_show (dialog_vbox6);
  711.  
  712.   table2 = gtk_table_new (2, 2, FALSE);
  713.   gtk_widget_show (table2);
  714.   gtk_box_pack_start (GTK_BOX (dialog_vbox6), table2, FALSE, FALSE, 0);
  715.   gtk_table_set_col_spacings (GTK_TABLE (table2), 10);
  716.  
  717.   label8 = gtk_label_new ("Tables directory");
  718.   gtk_widget_show (label8);
  719.   gtk_table_attach (GTK_TABLE (table2), label8, 0, 1, 0, 1,
  720.                     (GtkAttachOptions) (GTK_FILL),
  721.                     (GtkAttachOptions) (0), 0, 0);
  722.   gtk_misc_set_alignment (GTK_MISC (label8), 0, 0.5);
  723.  
  724.   hbox1 = gtk_hbox_new (FALSE, 0);
  725.   gtk_widget_show (hbox1);
  726.   gtk_table_attach (GTK_TABLE (table2), hbox1, 1, 2, 0, 1,
  727.                     (GtkAttachOptions) (GTK_FILL),
  728.                     (GtkAttachOptions) (GTK_FILL), 0, 0);
  729.  
  730.   entry_directory = gtk_entry_new ();
  731.   gtk_widget_show (entry_directory);
  732.   gtk_box_pack_start (GTK_BOX (hbox1), entry_directory, TRUE, TRUE, 0);
  733.  
  734.   button_directory = gtk_button_new ();
  735.   gtk_widget_show (button_directory);
  736.   gtk_box_pack_start (GTK_BOX (hbox1), button_directory, FALSE, FALSE, 0);
  737.  
  738.   image1 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON);
  739.   gtk_widget_show (image1);
  740.   gtk_container_add (GTK_CONTAINER (button_directory), image1);
  741.  
  742.   label17 = gtk_label_new ("   Tables type \n(auto-detected)");
  743.   gtk_widget_show (label17);
  744.   gtk_table_attach (GTK_TABLE (table2), label17, 0, 1, 1, 2,
  745.                     (GtkAttachOptions) (GTK_FILL),
  746.                     (GtkAttachOptions) (0), 0, 0);
  747.   gtk_misc_set_alignment (GTK_MISC (label17), 0, 0.5);
  748.  
  749.   scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
  750.   gtk_widget_show (scrolledwindow3);
  751.   gtk_table_attach (GTK_TABLE (table2), scrolledwindow3, 1, 2, 1, 2,
  752.                     (GtkAttachOptions) (GTK_FILL),
  753.                     (GtkAttachOptions) (GTK_FILL), 0, 0);
  754.   gtk_widget_set_size_request (scrolledwindow3, 350, 104);
  755.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  756.   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_SHADOW_IN);
  757.  
  758.   table_type_list = gtk_tree_view_new ();
  759.   gtk_widget_show (table_type_list);
  760.   gtk_container_add (GTK_CONTAINER (scrolledwindow3), table_type_list);
  761.   gtk_widget_set_size_request (table_type_list, 350, 100);
  762.   gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (table_type_list), FALSE);
  763.  
  764.   label23 = gtk_label_new ("1. Click the folder button to select the directory \n     where the table set is stored.\n2. The type of the tables is automatically highlighted above.\n3. Click OK");
  765.   gtk_widget_show (label23);
  766.   gtk_box_pack_start (GTK_BOX (dialog_vbox6), label23, FALSE, FALSE, 0);
  767.  
  768.   dialog_action_area6 = GTK_DIALOG (table_dialog)->action_area;
  769.   gtk_widget_show (dialog_action_area6);
  770.   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area6), GTK_BUTTONBOX_END);
  771.  
  772.   cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel");
  773.   gtk_widget_show (cancelbutton1);
  774.   gtk_dialog_add_action_widget (GTK_DIALOG (table_dialog), cancelbutton1, GTK_RESPONSE_CANCEL);
  775.   GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT);
  776.  
  777.   okbutton1 = gtk_button_new_from_stock ("gtk-ok");
  778.   gtk_widget_show (okbutton1);
  779.   gtk_dialog_add_action_widget (GTK_DIALOG (table_dialog), okbutton1, GTK_RESPONSE_OK);
  780.   GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
  781.  
  782.   g_signal_connect ((gpointer) table_dialog, "destroy",
  783.                     G_CALLBACK (on_table_dialog_destroy),
  784.                     NULL);
  785.   g_signal_connect ((gpointer) button_directory, "clicked",
  786.                     G_CALLBACK (on_button_directory_clicked),
  787.                     NULL);
  788.   g_signal_connect ((gpointer) cancelbutton1, "clicked",
  789.                     G_CALLBACK (on_cancel_table_dialog_clicked),
  790.                     NULL);
  791.   g_signal_connect ((gpointer) okbutton1, "clicked",
  792.                     G_CALLBACK (on_ok_table_dialog_clicked),
  793.                     NULL);
  794.  
  795.   /* Store pointers to all widgets, for use by lookup_widget(). */
  796.   GLADE_HOOKUP_OBJECT_NO_REF (table_dialog, table_dialog, "table_dialog");
  797.   GLADE_HOOKUP_OBJECT_NO_REF (table_dialog, dialog_vbox6, "dialog_vbox6");
  798.   GLADE_HOOKUP_OBJECT (table_dialog, table2, "table2");
  799.   GLADE_HOOKUP_OBJECT (table_dialog, label8, "label8");
  800.   GLADE_HOOKUP_OBJECT (table_dialog, hbox1, "hbox1");
  801.   GLADE_HOOKUP_OBJECT (table_dialog, entry_directory, "entry_directory");
  802.   GLADE_HOOKUP_OBJECT (table_dialog, button_directory, "button_directory");
  803.   GLADE_HOOKUP_OBJECT (table_dialog, image1, "image1");
  804.   GLADE_HOOKUP_OBJECT (table_dialog, label17, "label17");
  805.   GLADE_HOOKUP_OBJECT (table_dialog, scrolledwindow3, "scrolledwindow3");
  806.   GLADE_HOOKUP_OBJECT (table_dialog, table_type_list, "table_type_list");
  807.   GLADE_HOOKUP_OBJECT (table_dialog, label23, "label23");
  808.   GLADE_HOOKUP_OBJECT_NO_REF (table_dialog, dialog_action_area6, "dialog_action_area6");
  809.   GLADE_HOOKUP_OBJECT (table_dialog, cancelbutton1, "cancelbutton1");
  810.   GLADE_HOOKUP_OBJECT (table_dialog, okbutton1, "okbutton1");
  811.  
  812.   return table_dialog;
  813. }
  814.  
  815. GtkWidget*
  816. create_tableselection (void)
  817. {
  818.   GtkWidget *tableselection;
  819.   GtkWidget *vbox4;
  820.   GtkWidget *label29;
  821.   GtkWidget *hbuttonbox2;
  822.   GtkWidget *button6;
  823.   GtkWidget *button7;
  824.  
  825.   tableselection = gtk_file_chooser_dialog_new ("Select directory...", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, NULL);
  826.   gtk_window_set_type_hint (GTK_WINDOW (tableselection), GDK_WINDOW_TYPE_HINT_DIALOG);
  827.  
  828.   vbox4 = GTK_DIALOG (tableselection)->vbox;
  829.   gtk_widget_show (vbox4);
  830.  
  831.   label29 = gtk_label_new ("Select the directory where your table set is stored.\nClick Open.");
  832.   gtk_widget_show (label29);
  833.   gtk_box_pack_start (GTK_BOX (vbox4), label29, FALSE, FALSE, 0);
  834.  
  835.   hbuttonbox2 = GTK_DIALOG (tableselection)->action_area;
  836.   gtk_widget_show (hbuttonbox2);
  837.   gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END);
  838.  
  839.   button6 = gtk_button_new_from_stock ("gtk-cancel");
  840.   gtk_widget_show (button6);
  841.   gtk_dialog_add_action_widget (GTK_DIALOG (tableselection), button6, GTK_RESPONSE_CANCEL);
  842.   GTK_WIDGET_SET_FLAGS (button6, GTK_CAN_DEFAULT);
  843.  
  844.   button7 = gtk_button_new_from_stock ("gtk-open");
  845.   gtk_widget_show (button7);
  846.   gtk_dialog_add_action_widget (GTK_DIALOG (tableselection), button7, GTK_RESPONSE_OK);
  847.   GTK_WIDGET_SET_FLAGS (button7, GTK_CAN_DEFAULT);
  848.  
  849.   g_signal_connect ((gpointer) tableselection, "destroy",
  850.                     G_CALLBACK (on_tableselection_close),
  851.                     NULL);
  852.   g_signal_connect ((gpointer) button6, "clicked",
  853.                     G_CALLBACK (on_cancel_ts_clicked),
  854.                     NULL);
  855.   g_signal_connect ((gpointer) button7, "clicked",
  856.                     G_CALLBACK (on_ok_ts_clicked),
  857.                     NULL);
  858.  
  859.   /* Store pointers to all widgets, for use by lookup_widget(). */
  860.   GLADE_HOOKUP_OBJECT_NO_REF (tableselection, tableselection, "tableselection");
  861.   GLADE_HOOKUP_OBJECT_NO_REF (tableselection, vbox4, "vbox4");
  862.   GLADE_HOOKUP_OBJECT (tableselection, label29, "label29");
  863.   GLADE_HOOKUP_OBJECT_NO_REF (tableselection, hbuttonbox2, "hbuttonbox2");
  864.   GLADE_HOOKUP_OBJECT (tableselection, button6, "button6");
  865.   GLADE_HOOKUP_OBJECT (tableselection, button7, "button7");
  866.  
  867.   gtk_widget_grab_default (button7);
  868.   return tableselection;
  869. }
  870.  
  871. GtkWidget*
  872. create_load_hash_dialog (void)
  873. {
  874.   GtkWidget *load_hash_dialog;
  875.   GtkWidget *vbox5;
  876.   GtkWidget *table3;
  877.   GtkWidget *label13;
  878.   GtkWidget *hbox2;
  879.   GtkWidget *entry4;
  880.   GtkWidget *label16;
  881.   GtkWidget *hbuttonbox3;
  882.   GtkWidget *button8;
  883.   GtkWidget *button9;
  884.  
  885.   load_hash_dialog = gtk_dialog_new ();
  886.   gtk_window_set_title (GTK_WINDOW (load_hash_dialog), "Load single hash");
  887.   gtk_window_set_type_hint (GTK_WINDOW (load_hash_dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
  888.  
  889.   vbox5 = GTK_DIALOG (load_hash_dialog)->vbox;
  890.   gtk_widget_show (vbox5);
  891.  
  892.   table3 = gtk_table_new (1, 2, FALSE);
  893.   gtk_widget_show (table3);
  894.   gtk_box_pack_start (GTK_BOX (vbox5), table3, FALSE, FALSE, 0);
  895.  
  896.   label13 = gtk_label_new ("Hash:  ");
  897.   gtk_widget_show (label13);
  898.   gtk_table_attach (GTK_TABLE (table3), label13, 0, 1, 0, 1,
  899.                     (GtkAttachOptions) (GTK_FILL),
  900.                     (GtkAttachOptions) (0), 0, 0);
  901.   gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5);
  902.  
  903.   hbox2 = gtk_hbox_new (FALSE, 0);
  904.   gtk_widget_show (hbox2);
  905.   gtk_table_attach (GTK_TABLE (table3), hbox2, 1, 2, 0, 1,
  906.                     (GtkAttachOptions) (GTK_FILL),
  907.                     (GtkAttachOptions) (GTK_FILL), 0, 0);
  908.  
  909.   entry4 = gtk_entry_new ();
  910.   gtk_widget_show (entry4);
  911.   gtk_box_pack_start (GTK_BOX (hbox2), entry4, TRUE, TRUE, 0);
  912.   gtk_entry_set_max_length (GTK_ENTRY (entry4), 199);
  913.   gtk_entry_set_width_chars (GTK_ENTRY (entry4), 50);
  914.  
  915.   label16 = gtk_label_new ("Supported formats:\n\nlmhash\nlmhash:nthash\nusername:userid:lmhash:nthash::: (like pwdump)");
  916.   gtk_widget_show (label16);
  917.   gtk_box_pack_start (GTK_BOX (vbox5), label16, FALSE, FALSE, 0);
  918.  
  919.   hbuttonbox3 = GTK_DIALOG (load_hash_dialog)->action_area;
  920.   gtk_widget_show (hbuttonbox3);
  921.   gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox3), GTK_BUTTONBOX_END);
  922.  
  923.   button8 = gtk_button_new_from_stock ("gtk-cancel");
  924.   gtk_widget_show (button8);
  925.   gtk_dialog_add_action_widget (GTK_DIALOG (load_hash_dialog), button8, GTK_RESPONSE_CANCEL);
  926.   GTK_WIDGET_SET_FLAGS (button8, GTK_CAN_DEFAULT);
  927.  
  928.   button9 = gtk_button_new_from_stock ("gtk-ok");
  929.   gtk_widget_show (button9);
  930.   gtk_dialog_add_action_widget (GTK_DIALOG (load_hash_dialog), button9, GTK_RESPONSE_OK);
  931.   GTK_WIDGET_SET_FLAGS (button9, GTK_CAN_DEFAULT);
  932.  
  933.   g_signal_connect ((gpointer) load_hash_dialog, "destroy",
  934.                     G_CALLBACK (on_load_hash_dialog_destroy),
  935.                     NULL);
  936.   g_signal_connect ((gpointer) button8, "clicked",
  937.                     G_CALLBACK (on_cancel_load_hash_dialog_clicked),
  938.                     NULL);
  939.   g_signal_connect ((gpointer) button9, "clicked",
  940.                     G_CALLBACK (on_ok_load_hash_dialog_clicked),
  941.                     NULL);
  942.  
  943.   /* Store pointers to all widgets, for use by lookup_widget(). */
  944.   GLADE_HOOKUP_OBJECT_NO_REF (load_hash_dialog, load_hash_dialog, "load_hash_dialog");
  945.   GLADE_HOOKUP_OBJECT_NO_REF (load_hash_dialog, vbox5, "vbox5");
  946.   GLADE_HOOKUP_OBJECT (load_hash_dialog, table3, "table3");
  947.   GLADE_HOOKUP_OBJECT (load_hash_dialog, label13, "label13");
  948.   GLADE_HOOKUP_OBJECT (load_hash_dialog, hbox2, "hbox2");
  949.   GLADE_HOOKUP_OBJECT (load_hash_dialog, entry4, "entry4");
  950.   GLADE_HOOKUP_OBJECT (load_hash_dialog, label16, "label16");
  951.   GLADE_HOOKUP_OBJECT_NO_REF (load_hash_dialog, hbuttonbox3, "hbuttonbox3");
  952.   GLADE_HOOKUP_OBJECT (load_hash_dialog, button8, "button8");
  953.   GLADE_HOOKUP_OBJECT (load_hash_dialog, button9, "button9");
  954.  
  955.   return load_hash_dialog;
  956. }
  957.  
  958. GtkWidget*
  959. create_readahead_window (void)
  960. {
  961.   GtkWidget *readahead_window;
  962.   GtkWidget *readahead_label;
  963.  
  964.   readahead_window = gtk_window_new (GTK_WINDOW_POPUP);
  965.   gtk_window_set_position (GTK_WINDOW (readahead_window), GTK_WIN_POS_CENTER_ON_PARENT);
  966.   gtk_window_set_resizable (GTK_WINDOW (readahead_window), FALSE);
  967.   gtk_window_set_decorated (GTK_WINDOW (readahead_window), FALSE);
  968.   gtk_window_set_skip_taskbar_hint (GTK_WINDOW (readahead_window), TRUE);
  969.   gtk_window_set_skip_pager_hint (GTK_WINDOW (readahead_window), TRUE);
  970.   gtk_window_set_gravity (GTK_WINDOW (readahead_window), GDK_GRAVITY_CENTER);
  971.  
  972.   readahead_label = gtk_label_new ("Pre-loading table 0");
  973.   gtk_widget_show (readahead_label);
  974.   gtk_container_add (GTK_CONTAINER (readahead_window), readahead_label);
  975.   gtk_misc_set_padding (GTK_MISC (readahead_label), 50, 20);
  976.  
  977.   /* Store pointers to all widgets, for use by lookup_widget(). */
  978.   GLADE_HOOKUP_OBJECT_NO_REF (readahead_window, readahead_window, "readahead_window");
  979.   GLADE_HOOKUP_OBJECT (readahead_window, readahead_label, "readahead_label");
  980.  
  981.   return readahead_window;
  982. }
  983.  
  984. GtkWidget*
  985. create_help_window (void)
  986. {
  987.   GtkWidget *help_window;
  988.   GtkWidget *notebook1;
  989.   GtkWidget *scrolledwindow4;
  990.   GtkWidget *viewport1;
  991.   GtkWidget *help_load;
  992.   GtkWidget *label18;
  993.   GtkWidget *scrolledwindow5;
  994.   GtkWidget *viewport2;
  995.   GtkWidget *help_delete;
  996.   GtkWidget *label19;
  997.   GtkWidget *scrolledwindow6;
  998.   GtkWidget *viewport3;
  999.   GtkWidget *help_tables;
  1000.   GtkWidget *label20;
  1001.   GtkWidget *scrolledwindow7;
  1002.   GtkWidget *viewport4;
  1003.   GtkWidget *help_launch;
  1004.   GtkWidget *label21;
  1005.   GtkWidget *scrolledwindow8;
  1006.   GtkWidget *viewport5;
  1007.   GtkWidget *help_save;
  1008.   GtkWidget *label22;
  1009.  
  1010.   help_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  1011.   gtk_widget_set_size_request (help_window, 578, 460);
  1012.   gtk_window_set_title (GTK_WINDOW (help_window), "Help");
  1013.   gtk_window_set_default_size (GTK_WINDOW (help_window), 578, 460);
  1014.  
  1015.   notebook1 = gtk_notebook_new ();
  1016.   gtk_widget_show (notebook1);
  1017.   gtk_container_add (GTK_CONTAINER (help_window), notebook1);
  1018.  
  1019.   scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL);
  1020.   gtk_widget_show (scrolledwindow4);
  1021.   gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow4);
  1022.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  1023.  
  1024.   viewport1 = gtk_viewport_new (NULL, NULL);
  1025.   gtk_widget_show (viewport1);
  1026.   gtk_container_add (GTK_CONTAINER (scrolledwindow4), viewport1);
  1027.  
  1028.   help_load = gtk_label_new ("");
  1029.   gtk_widget_show (help_load);
  1030.   gtk_container_add (GTK_CONTAINER (viewport1), help_load);
  1031.  
  1032.   label18 = gtk_label_new ("Load");
  1033.   gtk_widget_show (label18);
  1034.   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label18);
  1035.  
  1036.   scrolledwindow5 = gtk_scrolled_window_new (NULL, NULL);
  1037.   gtk_widget_show (scrolledwindow5);
  1038.   gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow5);
  1039.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow5), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  1040.  
  1041.   viewport2 = gtk_viewport_new (NULL, NULL);
  1042.   gtk_widget_show (viewport2);
  1043.   gtk_container_add (GTK_CONTAINER (scrolledwindow5), viewport2);
  1044.  
  1045.   help_delete = gtk_label_new ("");
  1046.   gtk_widget_show (help_delete);
  1047.   gtk_container_add (GTK_CONTAINER (viewport2), help_delete);
  1048.  
  1049.   label19 = gtk_label_new ("Delete");
  1050.   gtk_widget_show (label19);
  1051.   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label19);
  1052.  
  1053.   scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL);
  1054.   gtk_widget_show (scrolledwindow6);
  1055.   gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow6);
  1056.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  1057.  
  1058.   viewport3 = gtk_viewport_new (NULL, NULL);
  1059.   gtk_widget_show (viewport3);
  1060.   gtk_container_add (GTK_CONTAINER (scrolledwindow6), viewport3);
  1061.  
  1062.   help_tables = gtk_label_new ("");
  1063.   gtk_widget_show (help_tables);
  1064.   gtk_container_add (GTK_CONTAINER (viewport3), help_tables);
  1065.  
  1066.   label20 = gtk_label_new ("Tables");
  1067.   gtk_widget_show (label20);
  1068.   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label20);
  1069.  
  1070.   scrolledwindow7 = gtk_scrolled_window_new (NULL, NULL);
  1071.   gtk_widget_show (scrolledwindow7);
  1072.   gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow7);
  1073.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow7), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  1074.  
  1075.   viewport4 = gtk_viewport_new (NULL, NULL);
  1076.   gtk_widget_show (viewport4);
  1077.   gtk_container_add (GTK_CONTAINER (scrolledwindow7), viewport4);
  1078.  
  1079.   help_launch = gtk_label_new ("");
  1080.   gtk_widget_show (help_launch);
  1081.   gtk_container_add (GTK_CONTAINER (viewport4), help_launch);
  1082.  
  1083.   label21 = gtk_label_new ("Launch/Stop");
  1084.   gtk_widget_show (label21);
  1085.   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), label21);
  1086.  
  1087.   scrolledwindow8 = gtk_scrolled_window_new (NULL, NULL);
  1088.   gtk_widget_show (scrolledwindow8);
  1089.   gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow8);
  1090.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow8), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  1091.  
  1092.   viewport5 = gtk_viewport_new (NULL, NULL);
  1093.   gtk_widget_show (viewport5);
  1094.   gtk_container_add (GTK_CONTAINER (scrolledwindow8), viewport5);
  1095.  
  1096.   help_save = gtk_label_new ("");
  1097.   gtk_widget_show (help_save);
  1098.   gtk_container_add (GTK_CONTAINER (viewport5), help_save);
  1099.  
  1100.   label22 = gtk_label_new ("Save");
  1101.   gtk_widget_show (label22);
  1102.   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 4), label22);
  1103.  
  1104.   g_signal_connect ((gpointer) help_window, "destroy",
  1105.                     G_CALLBACK (on_help_window_close),
  1106.                     NULL);
  1107.  
  1108.   /* Store pointers to all widgets, for use by lookup_widget(). */
  1109.   GLADE_HOOKUP_OBJECT_NO_REF (help_window, help_window, "help_window");
  1110.   GLADE_HOOKUP_OBJECT (help_window, notebook1, "notebook1");
  1111.   GLADE_HOOKUP_OBJECT (help_window, scrolledwindow4, "scrolledwindow4");
  1112.   GLADE_HOOKUP_OBJECT (help_window, viewport1, "viewport1");
  1113.   GLADE_HOOKUP_OBJECT (help_window, help_load, "help_load");
  1114.   GLADE_HOOKUP_OBJECT (help_window, label18, "label18");
  1115.   GLADE_HOOKUP_OBJECT (help_window, scrolledwindow5, "scrolledwindow5");
  1116.   GLADE_HOOKUP_OBJECT (help_window, viewport2, "viewport2");
  1117.   GLADE_HOOKUP_OBJECT (help_window, help_delete, "help_delete");
  1118.   GLADE_HOOKUP_OBJECT (help_window, label19, "label19");
  1119.   GLADE_HOOKUP_OBJECT (help_window, scrolledwindow6, "scrolledwindow6");
  1120.   GLADE_HOOKUP_OBJECT (help_window, viewport3, "viewport3");
  1121.   GLADE_HOOKUP_OBJECT (help_window, help_tables, "help_tables");
  1122.   GLADE_HOOKUP_OBJECT (help_window, label20, "label20");
  1123.   GLADE_HOOKUP_OBJECT (help_window, scrolledwindow7, "scrolledwindow7");
  1124.   GLADE_HOOKUP_OBJECT (help_window, viewport4, "viewport4");
  1125.   GLADE_HOOKUP_OBJECT (help_window, help_launch, "help_launch");
  1126.   GLADE_HOOKUP_OBJECT (help_window, label21, "label21");
  1127.   GLADE_HOOKUP_OBJECT (help_window, scrolledwindow8, "scrolledwindow8");
  1128.   GLADE_HOOKUP_OBJECT (help_window, viewport5, "viewport5");
  1129.   GLADE_HOOKUP_OBJECT (help_window, help_save, "help_save");
  1130.   GLADE_HOOKUP_OBJECT (help_window, label22, "label22");
  1131.  
  1132.   return help_window;
  1133. }
  1134.  
  1135.